<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Injection SQL</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Injection_SQL"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Injection_SQL rootpage-Injection_SQL skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Injection SQL</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p>La faille SQLi, abréviation de <i>SQL Injection</i>, soit <b>injection SQL</b> en <a href="Fran%C3%A7ais" title="Français">français</a>, est un groupe de méthodes d'<a href="Exploit_(informatique)" title="Exploit (informatique)">exploitation</a> de <a href="Faille_de_s%C3%A9curit%C3%A9" class="mw-redirect" title="Faille de sécurité">faille de sécurité</a> d'une application interagissant avec une <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a>. Elle permet d'injecter dans la <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a> en cours un morceau de requête non prévu par le système et pouvant en compromettre la <a href="S%C3%A9curit%C3%A9_informatique" class="mw-redirect" title="Sécurité informatique">sécurité</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Types_d'injections_SQL"><span id="Types_d.27injections_SQL"></span>Types d'injections SQL</h2></div>
<p>Il existe plusieurs types d'injection SQL :
</p>
<ul><li>la méthode <i>blind based</i> (associée à sa cousine la <i>time based</i>), qui permet de détourner la <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a> en cours sur le système et d'injecter des morceaux qui vont retourner caractère par caractère ce que l'attaquant cherche à extraire de la <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a>. La méthode <i>blind based</i>, ainsi que la <i>time based</i>, se basent sur la réponse du serveur : si la requête d'origine renvoie bien le même résultat qu'à l'origine (et indique donc que le caractère est valide) ou ne renvoie pas le même résultat (et indique donc que le caractère testé n'est pas le bon). La <i>time based</i> a pour seule différence qu'elle se base sur le temps de réponse du serveur plutôt que sur la réponse en elle-même ;</li>
<li>la méthode <i>error based</i>, qui permet de détourner la <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a> en cours sur le système et d'injecter des morceaux qui vont retourner champ par champ ce que l'on cherche à extraire de la <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a>. Cette méthode profite d'une faiblesse des systèmes de base de données permettant de détourner un <a href="Message_d'erreur" title="Message d'erreur">message d'erreur</a> généré par le système de base de données et préalablement volontairement provoquée par l'injection SQL pour lui faire retourner une valeur précise récupérée en base de données ;</li>
<li>la méthode <i>union based</i>, qui permet de détourner la <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a> en cours sur le système et d'injecter des morceaux qui vont retourner un ensemble de données directement extraites de la <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a>. Cette méthode profite de certaines méthodes afin de détourner entièrement le retour de la <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a> d'origine afin de lui faire retourner en une seule requête un important volume de données, directement récupéré en <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a>. Dans ses exemples les plus violents, il est possible de récupérer des tables entières de base de données en une ou deux requêtes, même si en général cette méthode retourne entre 10 et 100 lignes de la base de données par <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a> détournée ;</li>
<li>la méthode <i>Stacked queries</i>, la plus dangereuse de toutes. Profitant d'une erreur de configuration du serveur de <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a>, cette méthode permet d'exécuter n'importe quelle <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a> sur le système ciblé, ce qui ne se limite pas seulement à récupérer des données comme les 3 précédentes. En effet, quand ce type de requête n'est pas désactivé, il suffit d'injecter une autre <a href="Structured_Query_Language" title="Structured Query Language">requête SQL</a>, et elle sera exécutée sans problème, qu'elle aille chercher des données, ou en modifier directement dans la <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Exemple">Exemple</h2></div>
<p>Considérons un <a href="Site_web_dynamique" class="mw-redirect" title="Site web dynamique">site web dynamique</a> (programmé en <a href="PHP" title="PHP">PHP</a> dans cet exemple) qui dispose d'un système permettant aux utilisateurs possédant un nom d'utilisateur et un mot de passe valides de se connecter. Ce site utilise la requête SQL suivante pour identifier un utilisateur :
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">uid</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Users</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'(nom)'</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'(mot de passe hashé)'</span><span class="p">;</span>
</pre></div>
<p>L'utilisateur Dupont souhaite se connecter avec son mot de passe « truc » hashé en <a href="MD5" title="MD5">MD5</a>. La requête suivante est exécutée :
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">uid</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Users</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Dupont'</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'45723a2af3788c4ff17f8d1114760e62'</span><span class="p">;</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Attaquer_la_requête"><span id="Attaquer_la_requ.C3.AAte"></span>Attaquer la requête</h3></div>
<p>Imaginons à présent que le script PHP exécutant cette requête ne vérifie pas les données entrantes pour garantir sa sécurité. Un <a href="Hacker_(s%C3%A9curit%C3%A9_informatique)" title="Hacker (sécurité informatique)">hacker</a> pourrait alors fournir les informations suivantes :
</p>
<ul><li>Utilisateur : <code>Dupont';--</code></li>
<li>Mot de passe : n'importe lequel</li></ul>
<p>La requête devient :
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">uid</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Users</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Dupont'</span><span class="p">;</span><span class="c1">--' AND password = '4e383a1918b432a9bb7702f086c56596e';</span>
</pre></div>
<p>Les caractères <code>--</code> marquent le début d'un <a href="Commentaire_(informatique)" title="Commentaire (informatique)">commentaire</a> en SQL. La requête est donc équivalente à :
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">uid</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Users</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Dupont'</span><span class="p">;</span>
</pre></div>
<p>L'attaquant peut alors se connecter sous l'utilisateur Dupont avec n'importe quel mot de passe. Il s'agit d'une injection de SQL réussie, car l'attaquant est parvenu à injecter les caractères qu'il voulait pour modifier le comportement de la requête.
</p><p>Supposons maintenant que l'attaquant veuille non pas tromper le <a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">script</a> SQL sur le nom d'utilisateur, mais sur le mot de passe. Il pourra alors injecter le code suivant :
</p>
<ul><li>Utilisateur : Dupont</li>
<li>Mot de passe : <code>' or 1 --</code></li></ul>
<p>L'apostrophe indique la fin de la zone de frappe de l'utilisateur, le code « <code>or 1</code> » demande au script si 1 est vrai, or c'est toujours le cas, et -- indique le début d'un commentaire.
</p><p>La requête devient alors :
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">uid</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Users</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Dupont'</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="c1">--';</span>
</pre></div>
<p>Ainsi, le script programmé pour vérifier si ce que l'utilisateur tape est vrai, il verra que 1 est vrai, et l'attaquant sera connecté sous la <a href="Session_(informatique)" title="Session (informatique)">session</a> Dupont.
</p>
<div class="mw-heading mw-heading3"><h3 id="Solutions">Solutions</h3></div>
<div class="mw-heading mw-heading4"><h4 id="Échappement_des_caractères_spéciaux"><span id=".C3.89chappement_des_caract.C3.A8res_sp.C3.A9ciaux"></span>Échappement des caractères spéciaux</h4></div>
<p>La première solution consiste à échapper les caractères spéciaux contenus dans les <a href="Cha%C3%AEnes_de_caract%C3%A8res" class="mw-redirect" title="Chaînes de caractères">chaînes de caractères</a> entrées par l'utilisateur.
</p><p>En PHP on peut utiliser pour cela la fonction <code>mysqli_real_escape_string</code>, qui transformera la chaîne <code>' --</code> en <code>\' --</code>. La requête deviendrait alors :
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">uid</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Users</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Dupont\'</span><span class="w"> </span><span class="c1">-- ' AND password = '4e383a1918b432a9bb7702f086c56596e';</span>
</pre></div>
<p>L'apostrophe de fin de chaîne ayant été correctement dé-spécialisée en la faisant précéder d'un caractère « <a href=".//" class="mw-redirect" title="/">\</a> ».
</p><p>L'échappement peut aussi se faire (suivant le <a href="Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es" title="Système de gestion de base de données">SGBD</a> utilisé) en doublant les apostrophes.
</p><p>La marque de commentaire fera alors partie de la chaîne, et finalement le serveur SQL répondra qu'il n'y a aucune entrée dans la base de données correspondant à un utilisateur <code>Dupont' -- </code> avec ce mot de passe.
</p><p>La fonction <code>addslashes</code> ne suffit pas pour empêcher les injections via les variables numériques, qui ne sont pas encadrées d'apostrophes ou de guillemets dans les requêtes SQL. Exemple avec la requête :
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">numero_badge</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="n">numero</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">code_4_chiffre</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="n">code</span><span class="p">;</span>
</pre></div>
<p>qui réussit lorsque la variable <code>$numero</code> contient <code>0 or 1 --</code>. Une précaution est d'utiliser la fonction <code>ctype_digit</code> pour vérifier les variables numériques des requêtes. On peut aussi forcer la transformation de la variable en nombre en la faisant précéder d'un <i>transtypeur</i>, comme <code>(int)</code> si on attend un entier (la chaîne <code>0 or 1 --</code> sera alors transformée en l'entier <code>0</code> et l'injection SQL échouera).
</p><p>La fonction <code>addslashes</code> possède elle-même quelques failles sur certaines versions de PHP qui datent. De plus, elle échappe uniquement les caractères « \ », « NULL », « ' » et « " ». Il serait plus approprié d'utiliser la fonction <code>mysqli_real_escape_string</code> qui échappe justement les caractères spéciaux d'une commande SQL (NULL, \x1a, \n
, \r
, \, ', " et \x00).
</p>
<div class="mw-heading mw-heading4"><h4 id="Utilisation_d'une_requête_préparée"><span id="Utilisation_d.27une_requ.C3.AAte_pr.C3.A9par.C3.A9e"></span>Utilisation d'une requête préparée</h4></div>
<p>La seconde solution consiste à utiliser des requêtes préparées : dans ce cas, une compilation de la requête est réalisée avant d'y insérer les paramètres et de l'exécuter, ce qui empêche un éventuel code inséré dans les paramètres d'être interprété.
</p><p>De nombreux <a href="Framework" title="Framework">frameworks</a> sont équipés d'un <a href="Mapping_objet-relationnel" title="Mapping objet-relationnel">ORM</a> qui se charge entre autres de préparer les requêtes.
</p>
<div class="mw-heading mw-heading2"><h2 id="Comment_éviter_ces_attaques"><span id="Comment_.C3.A9viter_ces_attaques"></span>Comment éviter ces attaques</h2></div>
<p>Ces attaques peuvent être évitées de plusieurs façons :
</p>
<ol><li>Utiliser des <a href="Proc%C3%A9dure_stock%C3%A9e" title="Procédure stockée">procédures stockées</a>, à la place du <a href="Structured_Query_Language" title="Structured Query Language">SQL</a> dynamique. Les données entrées par l'utilisateur sont alors transmises comme paramètres, qui, s'ils sont correctement utilisés par la procédure (par exemple injectés dans une requête paramétrée), évitent l'injection ;</li>
<li>Vérifier de manière précise et exhaustive l'ensemble des données venant de l'utilisateur. On peut, par exemple, utiliser une <a href="Expression_rationnelle" class="mw-redirect" title="Expression rationnelle">expression rationnelle</a> afin de valider qu'une donnée entrée par l'utilisateur est bien de la forme souhaitée, ou profiter de fonctions de transformation spécifiques au langage ;</li>
<li>Utiliser des comptes utilisateurs SQL à accès limité (en lecture-seule) quand cela est possible ;</li>
<li>Utiliser des requêtes SQL <i>paramétrées</i> (requêtes à trous envoyées au serveur SQL, serveur à qui l'on envoie par la suite les paramètres qui boucheront les trous), ainsi c'est le <a href="Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es" title="Système de gestion de base de données">SGBD</a> qui se charge d'échapper les caractères selon le type des paramètres.</li></ol>
<div class="mw-heading mw-heading3"><h3 id="En_PHP">En PHP</h3></div>
<p>Les « <i><span class="lang-en" lang="en">magic quotes</span></i> » étaient utilisées par défaut dans la configuration de <a href="PHP" title="PHP">PHP</a>. Elles permettaient qu'un caractère d’échappement soit automatiquement placé devant les apostrophes et guillemets dangereux.
</p><p>Certaines failles de sécurité et la disparition de <code>magic_quotes_gpc</code> dans PHP5.4 incitent à remplacer cette option par les solutions ci-dessus : la fonction <code>mysqli_real_escape_string</code>, les classes <span class="lang-en" lang="en"><a href="PHP_Data_Objects" title="PHP Data Objects">PHP Data Objects</a></span>, <abbr class="abbr" title="et cetera">etc.</abbr>
</p>
<div class="mw-heading mw-heading2"><h2 id="Exemples">Exemples</h2></div>
<ul><li>En <time class="nowrap" datetime="2002-02" data-sort-value="2002-02">février 2002</time>, Jeremiah Jacks révèle une faille de sécurité sur le site de Guess.com exploitable par une attaque d’injection SQL et permettant d’obtenir les coordonnées de plus de 200 000 personnes y compris leurs numéros de cartes de crédit avec la date d’expiration<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.</li>
<li>Le <time class="nowrap" datetime="2005-11-01" data-sort-value="2005-11-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> novembre 2005</time>, un jeune pirate utilise l’injection SQL pour s’introduire dans le site d’information taïwanais consacrée à la sécurité informatique et s’empare des données de la base client<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.</li>
<li>Le <time class="nowrap" datetime="2006-03-29" data-sort-value="2006-03-29">29 mars 2006</time>, un pirate s’attaque par une injection SQL au site officiel du tourisme indien appartenant au gouvernement<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.</li>
<li>En <time class="nowrap" datetime="2008-01" data-sort-value="2008-01">janvier 2008</time>, des dizaines de milliers de PC sont infectées par une injection SQL automatique exploitant une faille de sécurité de <a href="Microsoft_SQL_Server" title="Microsoft SQL Server">Microsoft SQL Server</a>.</li>
<li>Le <time class="nowrap" datetime="2008-04-13" data-sort-value="2008-04-13">13 avril 2008</time> survient le vol de 10 597 numéros de sécurité sociale américains<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>.</li>
<li>Le <time class="nowrap" datetime="2009-08-17" data-sort-value="2009-08-17">17 août 2009</time>, le département de la justice américaine identifie l'américain <a href="Albert_Gonzalez" title="Albert Gonzalez">Albert Gonzalez</a> et deux russes comme les auteurs du vol de 130 millions de numéros de cartes de crédit grâce à une attaque par injection SQL. Les principales victimes sont la société de traitement des paiements par cartes <span class="lang-en" lang="en">Heartland Payment Systems</span>, les chaînes de supermarché <span class="lang-en" lang="en">7-eleven</span> et Hannaford <span class="lang-en" lang="en">Brothers</span><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>.</li>
<li>Le <time class="nowrap" datetime="2010-07-24" data-sort-value="2010-07-24">24 juillet 2010</time>, des attaques par injection SQL simultanées de Japon et de <a href="Chine" title="Chine">Chine</a> parviennent à pénétrer la société <span class="lang-en" lang="en">NeoBeat</span> qui gère des supermarchés sur internet et volent 12 191 données de cartes bancaires.</li>
<li>Le <time class="nowrap" datetime="2010-11-08" data-sort-value="2010-11-08">8 novembre 2010</time>, un pirate roumain appelé <a href="TinKode" title="TinKode">TinKode</a> utilise une attaque par injection SQL pour paralyser le site de la <span class="lang-en" lang="en">Royal Navy</span> en Angleterre<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>.</li>
<li>Le <time class="nowrap" datetime="2011-04-11" data-sort-value="2011-04-11">11 avril 2011</time>, l’ensemble du réseau Barracuda est victime d’une attaque par injection SQL. Identifiants et adresses emails des employés sont détournés<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>.</li>
<li>Le <time class="nowrap" datetime="2011-06-01" data-sort-value="2011-06-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> juin 2011</time>, le groupe appelé <a href="LulzSec" title="LulzSec">LulzSec</a> est accusé d’une attaque par injection SQL contre le site de Sony. Au moins 1 million de clients se font voler coupons, clés d’activation et mot de passe<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>.</li>
<li>En <time class="nowrap" datetime="2012-07" data-sort-value="2012-07">juillet 2012</time>, <a href="Yahoo!" title="Yahoo!">Yahoo</a> rapporte le vol de données de plus de 450,000 clients<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.</li>
<li>En <time class="nowrap" datetime="2013-08" data-sort-value="2013-08">août 2013</time>, Yahoo rapporte le vol de données de plus de 1 milliard de comptes<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Dans_la_fiction">Dans la fiction</h2></div>
<p>Dans le roman <i><a href="Une_place_%C3%A0_prendre" title="Une place à prendre">Une place à prendre</a></i> (2012) de <a href="J._K._Rowling" title="J. K. Rowling">J. K. Rowling</a>, c'est grâce à une injection SQL que trois adolescents parviennent à pirater un <a href="Serveur_informatique" title="Serveur informatique">serveur informatique</a> et à diffamer plusieurs personnes de leur petite ville, créant ainsi d'importantes remises en question.
</p>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2002"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://www.securityfocus.com/news/346"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">Guesswork Plagues Web Hole Reporting</span></cite></a> », <i><span class="lang-en" lang="en"><a href="SecurityFocus" title="SecurityFocus">SecurityFocus</a></span></i>, <time class="nowrap" datetime="2002-03-06" data-sort-value="2002-03-06">6 mars 2002</time></span>.</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2005"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://www.xiom.com/whid-2005-46"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">WHID 2005-46: Teen uses SQL injection to break to a security magazine web site</span></cite></a> », <i><span class="lang-en" lang="en">Web Application Security Consortium</span></i>, <time class="nowrap" datetime="2005-11-01" data-sort-value="2005-11-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> novembre 2005</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2009-12-01" data-sort-value="2009-12-01"><abbr class="abbr" title="premier">1<sup>er</sup></abbr> décembre 2009</time>)</small></span>.</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2006"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://www.xiom.com/whid-2006-27"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">WHID 2006-27: SQL Injection in incredibleindia.org</span></cite></a> », <i><span class="lang-en" lang="en">Web Application Security Consortium</span></i>, <time class="nowrap" datetime="2006-03-29" data-sort-value="2006-03-29">29 mars 2006</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2010-03-12" data-sort-value="2010-03-12">12 mars 2010</time>)</small></span>.</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Papadimoulis2008"><span class="ouvrage" id="Alex_Papadimoulis2008"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Alex Papadimoulis, « <a rel="nofollow" class="external text" href="http://thedailywtf.com/Articles/Oklahoma-Leaks-Tens-of-Thousands-of-Social-Security-Numbers,-Other-Sensitive-Data.aspx"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">Oklahoma Leaks Tens of Thousands of Social Security Numbers, Other Sensitive Data</span></cite></a> », <i><span class="lang-en" lang="en">The Daily WTF</span></i>, <time class="nowrap" datetime="2008-04-15" data-sort-value="2008-04-15">15 avril 2008</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2008-05-16" data-sort-value="2008-05-16">16 mai 2008</time>)</small></span></span>.</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2009"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://news.bbc.co.uk/2/hi/americas/8206305.stm"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">US man 'stole 130m card numbers'</span></cite></a> », <i>BBC</i>, <time class="nowrap" datetime="2009-08-17" data-sort-value="2009-08-17">17 août 2009</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2009-08-17" data-sort-value="2009-08-17">17 août 2009</time>)</small></span>.</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="https://www.bbc.co.uk/news/technology-11711478"><i><span class="lang-en" lang="en">Royal Navy website attacked by Romanian hacker</span></i></a>, <i><span class="lang-en" lang="en">BBC News</span></i>, <span class="need_ref" title="Ce passage devrait préciser au minimum la décennie ou l'année." style="cursor:help;">8-11-10</span><sup class="need_ref_tag" style="padding-left:2px;">[Quand ?]</sup>, <span class="lang-en" lang="en">Accessed November</span> 2010.</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Kiley2010"><span class="ouvrage" id="Sam_Kiley2010"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Sam Kiley, « <a rel="nofollow" class="external text" href="http://news.sky.com/skynews/Home/World-News/Stuxnet-Worm-Virus-Targeted-At-Irans-Nuclear-Plant-Is-In-Hands-Of-Bad-Guys-Sky-News-Sources-Say/Article/201011415827544"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">Super Virus A Target For Cyber Terrorists</span></cite></a> », <time class="nowrap" datetime="2010-11-25" data-sort-value="2010-11-25">25 novembre 2010</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2010-11-25" data-sort-value="2010-11-25">25 novembre 2010</time>)</small></span></span>.</span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a> </span><span class="reference-text"><span class="ouvrage"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://www.networkworld.com/news/2011/041211-hacker-breaks-into-barracuda-networks.html?hpg1=bn"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">Hacker breaks into Barracuda Networks database</span></cite></a> »</span>.</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2011"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://www.electronista.com/articles/11/06/02/lulz.security.hits.sony.again.in.security.message/"><cite style="font-style:normal;" lang="en"><span class="lang-en" lang="en">LulzSec hacks Sony Pictures, reveals 1m passwords unguarded</span></cite></a> », <span class="italique">electronista.com</span>, <time class="nowrap" datetime="2011-06-02" data-sort-value="2011-06-02">2 juin 2011</time></span>.</span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Chenda Ngak. <a rel="nofollow" class="external text" href="http://www.cbsnews.com/8301-501465_162-57470956-501465/yahoo-reportedly-hacked-is-your-account-safe/"><i><span class="lang-en" lang="en">"Yahoo reportedly hacked: Is your account safe?"</span></i></a>, <span class="lang-en" lang="en">CBS News</span>. 12 juillet 2012. Consulté le 16 juillet 2012.</span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Yap2012"><span class="ouvrage" id="Jamie_Yap2012"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Jamie <span class="nom_auteur">Yap</span>, « <cite style="font-style:normal" lang="en">450,000 user passwords leaked in Yahoo breach | ZDNet</cite> », <i><span class="lang-en" lang="en">ZDNet</span></i>, <time class="nowrap" datetime="2012-07-12" data-sort-value="2012-07-12">12 juillet 2012</time> <small style="line-height:1em;">(<a rel="nofollow" class="external text" href="https://www.zdnet.com/450000-user-passwords-leaked-in-yahoo-breach-7000000772/">lire en ligne</a>, consulté le <time class="nowrap" datetime="2017-02-18" data-sort-value="2017-02-18">18 février 2017</time>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=450%2C000+user+passwords+leaked+in+Yahoo+breach+%7C+ZDNet&rft.jtitle=ZDNet&rft.aulast=Yap&rft.aufirst=Jamie&rft.date=2012-07-12&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AInjection+SQL"></span></span></span></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Gavois2016"><span class="ouvrage" id="Sébastien_Gavois2016">Sébastien <span class="nom_auteur">Gavois</span>, « <cite style="font-style:normal">Yahoo annonce le vol de données de plus d'un milliard de comptes</cite> », <i><a href="Next_INpact" class="mw-redirect" title="Next INpact">Next INpact</a></i>, <time class="nowrap" datetime="2016-12-15" data-sort-value="2016-12-15">15 décembre 2016</time> <small style="line-height:1em;">(<a rel="nofollow" class="external text" href="https://www.nextinpact.com/news/102530-yahoo-annonce-vol-donnees-plus-dun-milliard-comptes.htm">lire en ligne</a>, consulté le <time class="nowrap" datetime="2017-07-04" data-sort-value="2017-07-04">4 juillet 2017</time>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Yahoo+annonce+le+vol+de+donn%C3%A9es+de+plus+d%27un+milliard+de+comptes&rft.jtitle=Next+INpact&rft.aulast=Gavois&rft.aufirst=S%C3%A9bastien&rft.date=2016-12-15&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AInjection+SQL"></span></span></span></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Reynaud2016"><span class="ouvrage" id="Florian_Reynaud2016">Florian <span class="nom_auteur">Reynaud</span>, « <cite style="font-style:normal">Le piratage de Yahoo! est le plus important vol de données de l’histoire</cite> », <i>Le Monde.fr</i>, <time class="nowrap" datetime="2016-12-15" data-sort-value="2016-12-15">15 décembre 2016</time> <small style="line-height:1em;">(<a href="International_Standard_Serial_Number" title="International Standard Serial Number">ISSN</a> <span class=" noarchive"><a rel="nofollow" class="external text" href="https://portal.issn.org/resource/issn/1950-6244">1950-6244</a></span>, <a rel="nofollow" class="external text" href="https://www.lemonde.fr/pixels/article/2016/12/15/le-piratage-de-yahoo-est-le-plus-important-vol-de-donnees-de-l-histoire_5049326_4408996.html">lire en ligne</a>, consulté le <time class="nowrap" datetime="2017-07-04" data-sort-value="2017-07-04">4 juillet 2017</time>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Le+piratage+de+Yahoo%21+est+le+plus+important+vol+de+donn%C3%A9es+de+l%E2%80%99histoire&rft.jtitle=Le+Monde.fr&rft.aulast=Reynaud&rft.aufirst=Florian&rft.date=2016-12-15&rft.issn=1950-6244&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AInjection+SQL"></span></span></span></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><a href="Vuln%C3%A9rabilit%C3%A9_(informatique)" title="Vulnérabilité (informatique)">Vulnérabilité (informatique)</a></li>
<li><span class="lang-en" lang="en"><a href="Cross-site_scripting" title="Cross-site scripting">Cross-site scripting</a></span></li>
<li><a href="Metasploit" title="Metasploit">Metasploit</a>, un outil de <a href="Test_d'intrusion" title="Test d'intrusion">test d'intrusion</a> open-source incluant des tests d'injection SQL</li></ul>
<p><br>
</p>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la sécurité des systèmes d'information</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail des bases de données</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-10-29" href="https://fr.wikipedia.org/wiki/?title=Injection_SQL&oldid=230164073">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>